문제

문자열 str이 주어질 때, str을 출력하는 코드를 작성해 보세요.

제한사항

  • 1 ≤ str의 길이 ≤ 1,000,000
  • str에는 공백이 없으며, 첫째 줄에 한 줄로만 주어집니다.

입출력 예

입력 #1

HelloWorld!

출력 #1

HelloWorld!

코드

const readline = require('readline');

const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let input = [];

rl.on('line', function (line) {
  input = [line];
}).on('close', function () {
  str = input[0];
  console.log(str);
});

JS 문법

readline 모듈

  • JS내장된 모듈로 한 줄씩 입출력을 처리할 수 있게 도와준다.

모듈 불러오기

const readline = require('readline');

readline interface 객체 만들기

  • 정의한 변수를 이용해 readline 인터페이스 객체를 하나 만들어줍니다.
  • readline interface 객체를 이용해 콘솔에서 표준 입출력을 처리할 수 있습니다.
  • creacteInterface()메서드를 이용해 객체를 만들고, rl 변수에 저장해줍니다.
// createInterface()메서드
const rl = readline.createInterface({
  // readline.Interface 인스턴스를 생성함
  input: process.stdin, // process.stdin: 입력 스트림
  output: process.stdout, // process.stdout: 출력 스트림
});

on 메소드

  • 생성한 변수 rl 객체로 입출력과 관련된 여러 이벤트 처리를 할 수 있습니다.
  • 예를 들어 사용자가 콘솔에 입력을 넣는 것과 같은 이벤트가 있습니다.
  • on메소드를 이용하면 이벤트가 발생할 때 실행할 동작을 지정할 수 있습니다.

line 이벤트

  • readline interface를 통해 다룰 이벤트는 ‘Line’이벤트로 사용자가 콘솔에 입력을 할 때 발생합니다.
  • 입력 이벤트는 입력 스트림에 줄바꿈을 나타내는 \n, \r, \r\n 제어문자가 나타나거나, 사용자가 Enter 또는 Return을 누를 때 발생합니다.

close 이벤트

  • ‘close’이벤트는 readable 스트림 종료를 제어하는 이벤트이며, ‘line’이벤트와 비슷한 형태로 작성합니다.
  • 더 이상 입력받을 것이 없을 때 rl.close()를 호출하여 발생시킵니다.
  • ‘line’이벤트와 함께 아래와 같이 사용됩니다.

rl 변수

rl.on('line', function (line) {
  // 입력 부분
  input = [line];
}).on('close', function () {
  // 출력 부분
  str = input[0];
  console.log(str);
});

코드 해설

입력 부분

  • 한줄씩 입력 받은 후 line에 값이 저장된다.
  • input 배열에 line을 저장한다.

출력 부분

  • input 배열에 저장되어 있는 인덱스 0번을 str이라는 변수에 선언한다.
  • console.log 를 통해 str에 저장된 문자열을 출력한다.